The improved sophistication in hardware and software, with regard to signal processing in communication units, has increased the ease for reprogramming communication units to provide additional features. Reduced time-to-market goals has forced completion of the designs from conception to production to be faster, therefore leaving less time for new-peripheral support. To accommodate this, code revisions via Erasable Programmable Read Only Memory (EPROM) have been implemented. However, such use of EPROM technology requires either a service call with a technician visit or sending EPROMs to the end user. The use of flash memory devices has offered the same non-volatile storage features as EPROM, but additionally offering a system write capability. Using flash memories in microprocessor controlled systems, code updates are done quickly in the factory, during test and debug, whilst allowing cost-effective field updates to end users via floppy disks or via a modem without disassembling housings or other mechanical elements.
A flash memory is an electrical erasable programmable read/write memory. The feature of the electrical erasability is the advantage of the flash memory comparable with Electrically Erasable Programmable Read Only Memories (EEPROMs) which also provide read/write capability, but are more expensive and where the programming cycles require significantly more processing time. With EPROMs ultra-violet (UV) light is used for the erasing process. This requires physical access to the device. In addition, the programming of the EPROM requires an external dedicated programmer unit. The flash memory however, integrates a write state machine on-chip to internally implement program and erase algorithms. Operations are initiated through command sequence writes to the flash command register and progress is reported back to the controlling instance through the flash status register. A problem associated with the use of such flash devices is that during the programming or erasing time periods the flash device can not access the flash stored data or code.
Often the flash device is connected to a micro-controller which incorporates a number of other circuits and tasks that the micro-controller is required to perform with the assistance of the flash memory device. One such firmware circuit and associated task, that is generally required of flash devices, is to provide a software real-time clock to other circuits. Modern designed micro-controllers use an operating system in order to allow the separation of several software related layers, e.g. user interface layer, control layer, protocol layer, physical layer (H/W drivers). Furthermore, this operating system allows the division of the applications into several tasks. For communication devices it is very important that the response time is predictable. Therefore communication devices must use "real-time operating systems". These operating systems require, for internal functionality (e.g. task scheduling or inter task communication), a real time clock. Typically, due to cost, component count and space limitations the product design will implement the real-time clock in software.
A further use for, and advantage of, flash devices emanates from their ability to provide re-programming opportunities for particular target hardware, e.g. as part of a codeplug function for programming mobile and portable radio units. During re-programming operations only the flash internal programming status register is accessible, and as such, code cannot be executed out of this device at this time. Hence, any software real-time code related functions can not be executed during programming (or erasing) operations and the unit timing loses its accuracy. It is difficult to accurately determine the timing error in such situations due to the unpredictable duration of programming operations with regard to temperature, age and supply voltage of the Flash device.
Previously, two different accessible memory devices have been used as a solution to this problem, e.g. an EPROM for firmware operations and an Electrically Erasable Programmable Read Only Memory (EEPROM) for codeplug operations. This allows the codeplug to be erased without impacting the firmware operation, thereby maintaining the ability to execute programs out of the EPROM. The requirement for cost and size reduction of current products has forced manufacturers to investigate the possibility of only using one device to provide both functions.
In certain situations, where an absolute timing clock is used, the unit's time needs to be manually set after all (re-)programming operations. In addition, in some micro-controllers, the re-programming operation is performed by replacing the firmware code in the EPROM's. This requires the micro-controller to be powered down with subsequent loss of unit timing accuracy.
Micro-controllers running a software Real Time Clock (RTC) and providing a re-programming feature have to deal with the following problem. In modern designed devices the firmware including a software RTC is stored inside a flash device. The flash device technology offers the advantage of a re-programming opportunity in the target hardware. Unfortunately, codeplug information is required in order to execute firmware, therefore both functions are needed to be operational at any time. A further disadvantage being that the current flash technology doesn't allow read operations during a programming cycle. This means that the RTC code cannot be executed during programming activities and therefore the unit loses its accurately adjusted time. The resulting time deviation is unpredictable due to the fact that the programming duration depends on temperature, age and supply voltage of the flash device.
In the past, devices containing the firmware code had to be replaced (EPROM's) due to the fact that they could not be re-programmed in the target hardware. In particular, there exists a need to (re-)program information into radio units dependent upon the communications system being used, customer information or the country of operation, e.g. for approved frequency and transmit power levels. Typically, the micro-controller had to be powered down thereby preventing accurate maintenance of unit time. This resulted in manually maintaining a unit time setting. Absolute unit timing is often required to generate alarm signals indicative of the time that a communication unit failure occurs or for charging different rates for the communications system use.
This results in the necessity to set the unit time manually after every programming session.
This invention seeks to provide a method of programming memory elements, and in particular flash devices, to mitigate at least some of the problems highlighted above.